#include <head.h>

/*
#include <pthread.h>

int pthread_join(pthread_t thread, void **retval);

功能:
    1、在主线程中 等待 线程结束  会阻塞等待 直到目标结束
    2、获取线程退出状态 通过 retval 来获取退出的状态 通过return 返回的值
参数:
    thread：被等待的线程的标识符，即目标线程的 pthread_t 类型的标识符。
    retval：一个指向指针的指针，用于存储被等待线程的退出状态。
返回值:
    成功，返回0
    错误，返回错误编号
*/


void *func_2(void * i)
{
    // 线程任务
    printf("我是%d号线程 func_2\n" , *((int *)i));
}


void *func_1(void *v)
{
    pthread_t Tid[5];
    int arr[5] = {1 , 2 , 3 , 4 , 5};

    printf("我是主线程 : func_1\n");
    // 循环创建线程
    for (size_t i = 0; i < 5; i++)
    {
        if (0 != pthread_create(&Tid[i], NULL, func_2, (void *)&arr[i]))
        {
            printf("pthread_create error\n");
            return 0;
        }
    }

    // 循环回收线程
    for (size_t i = 0; i < 5; i++)
    {
        pthread_join(Tid[i], NULL); // 阻塞回收

    }
    
}



int main(int argc, char const *argv[])
{
    // 接收线程号
    pthread_t Tid = 0;

    // 创建线程
    if (0 != pthread_create(&Tid, NULL, func_1, NULL))
    {
        printf("pthread_create error\n");
        return 0;
    }

    pthread_join(Tid, NULL); // 阻塞回收

    return 0;
}
